package com.yeren.list.arrayList;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * 数组转为List集合
 * 1.Arrays类中提供了一个静态方法asList，使用该方法我们可以将一个数组转换为对应的List集合。
 * 2.其定义方法为：
 *   static<T>List<T>asList<T...a>
 * 3.返回的List的集合元素类型由传入的数组的元素类型决定。
 * 4.并且要注意的是，返回的集合我们不能对其删除元素，
 *   否则会抛出异常。并且对集合的元素惊醒修改会影响数组对应的元素。
 */
public class ListDemo5 {
	public static void main(String[] args) {
		String[] array={"a","b","c","d"};
		/*
		 * 数组只能转换为List集合
		 * 因为若转换为set可能会丢失重复元素
		 */
		List<String> list=Arrays.asList(array);
		System.out.println(list);//[a, b, c, d]
//		list.add("e");//不能增加
//		list.remove(3);//不能删除
		/*
		 * 通过数组转换的集合，是不能改变集合元素数量的
		 */
		//修改集合元素内容，会影响原数据
		list.set(3, "e");
		System.out.println(list);//[a, b, c, e]
		System.out.println(Arrays.toString(array));//[a, b, c, e]
		/*
		 * 所有的集合实现类都支持一个构造方法
		 * 该方法可以传入一个Collection，
		 * 那么该构造方法创建出来的集合默认就添加
		 * 了给定集合中的所有元素这样的构造方法叫做复制构造器
		 */
		List list2=new ArrayList(list);
		System.out.println("list2-->"+list2);//[a, b, c, e]
		list2.add("f");
		System.out.println(list2);//[a, b, c, e, f]
	}
}
